package com.hqully.labmanage.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * [DeviceRecord]DTO
 *
 * @author hqully
 * @date 2022-10-13 06:26:00
 */
@ApiModel(description = "设备使用记录表")
@Data
public class DeviceRecordDTO implements Serializable {

    private static final long serialVersionUID = 972883895201090641L;
    
    /**
     * 物理id
     */
    @ApiModelProperty("物理id")
    @NotNull(message = "物理id不能为空")
    private Long id;
    
    /**
     * 设备id
     */
    @ApiModelProperty("设备id")
    @NotBlank(message = "设备id不能为空")
    @Length(max = 255, message = "设备id长度不能超过255")
    private String deviceId;
    
    /**
     * 使用学生id
     */
    @ApiModelProperty("使用学生id")
    @NotNull(message = "使用学生id不能为空")
    private Long studentId;
    
    /**
     * 设备开始使用时间
     */
    @ApiModelProperty("设备开始使用时间")
    @NotNull(message = "设备开始使用时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    
    /**
     * 设备结束使用时间
     */
    @ApiModelProperty("设备结束使用时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;
    
    /**
     * 设备使用时长
     */
    @ApiModelProperty("设备使用时长")
    private Long duration;
    
    /**
     * 设备使用日期
     */
    @ApiModelProperty("设备使用日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate usageDate;
    
    /**
     * 使用记录id
     */
    @ApiModelProperty("使用记录id")
    @NotBlank(message = "使用记录id不能为空")
    @Length(max = 255, message = "使用记录id长度不能超过255")
    private String recordId;
    
    /**
     * 设备是否正在使用中
     */
    @ApiModelProperty("设备是否正在使用中")
    private Boolean inUse;
    

}

